#include <bits/stdc++.h>
using namespace std;

const int MAXN = 1E5 + 10;

stack<char> ST;
char minAfter[MAXN];
int n;
string s;

bool check(int pos) {
  return ST.empty() || (pos < n && ST.top() > minAfter[pos]);
}

int main() {
  cin >> n >> s;

  minAfter[n - 1] = s[n - 1];
  for (int i = n - 2; i >= 1; i--) {
    minAfter[i] = min(s[i], minAfter[i + 1]);
  }


  int pos = 1;
  ST.push(s[0]);

  while (!ST.empty() || pos < n) {
    if (check(pos)) {
      ST.push(s[pos]);
      pos++;
    } else {
      cout << ST.top();
      ST.pop();
    }
  }

  return 0;
}